'''
Created on 18/02/2011

@author: user
'''
from datetime import datetime
import time
class Status(object):
    '''
    classdocs
    '''


    def __init__(self, file, TamBloco = 8192 ):
        '''
        Constructor
        '''
        posicaoAtual = file.tell()
        #print posicaoAtual
        file.seek(0,2)
        self.total = file.tell()
        #file.seek(posicaoAtual)
        file.seek(0,0)
        self.concluido = 0
        self.porcentagem = -1
        self.ultimoTempo = 0
    
    def __call__(self, parte):
        tamanho = len(parte)
        self.concluido += tamanho
        
        variacao = time.time() - self.ultimoTempo
        '''velocidade em KB/s'''
        if variacao == 0 : variacao =1
        self.velocidade = (tamanho/variacao) / 1000 
        #time.sleep(1) 
        #if (self.porcentagem < round(float(self.concluido*100)/self.total, 1)):
        self.porcentagem = float(self.concluido*100)/self.total
        print "\r {:12,} - {:12,} - {:6.2f}% - {:8,.2f}KB/s".format(self.concluido, self.total, float(self.porcentagem), float(self.velocidade)) ,
        
        self.ultimoTempo = time.time()
        
    
    
if __name__ == '__main__':
    arq = file("teste","r")
    
    s = Status(arq)
    
    for i in xrange(10): s("         ")
    arq.close()
        